// Package config 配置包，提供配置管理功能
package config

import (
    "fmt"
    "github.com/joho/godotenv"
    "os"
    "path/filepath"
)

// LoadEnv 加载环境变量配置
// 从项目根目录的.env文件中加载配置
func LoadEnv() error {
    // 获取当前工作目录
    workDir, err := os.Getwd()
    if err != nil {
        return fmt.Errorf("获取工作目录失败: %v", err)
    }

    // 查找项目根目录（包含.env文件的目录）
    configPath := filepath.Join(workDir, ".env")
    if _, err := os.Stat(configPath); os.IsNotExist(err) {
        // 如果在当前目录没找到，尝试向上一级查找
        configPath = filepath.Join(workDir, "../.env")
    }

    // 加载.env文件
    if err := godotenv.Load(configPath); err != nil {
        return fmt.Errorf("加载.env文件失败: %v", err)
    }

    return nil
}

// GetDBConfig 获取数据库配置
// 从环境变量中读取数据库配置信息
func GetDBConfig() *DBConfig {
    return &DBConfig{
        Host:     getEnvOrDefault("DB_HOST", "localhost"),
        Port:     getEnvOrDefault("DB_PORT", "3306"),
        User:     getEnvOrDefault("DB_USER", "root"),
        Password: getEnvOrDefault("DB_PASSWORD", ""),
        DBName:   getEnvOrDefault("DB_NAME", "windsurf_db"),
    }
}

// getEnvOrDefault 获取环境变量值，如果不存在则返回默认值
func getEnvOrDefault(key, defaultValue string) string {
    if value, exists := os.LookupEnv(key); exists {
        return value
    }
    return defaultValue
}
